#include <stdio.h>
#include "struct.h"
#include <getch.h>
#include <stdlib.h>
#include <string.h>
#include "system.h"
#include "tools.h"


Admin *adm;
void modify_admin() //修改密码
{
		char pw[30];
		puts("请输入旧密码");
		scanf("%s",pw);
		if(strcmp(pw,adm[0].passwd)!=0)		//判断旧密码是否正确
		{
			puts("密码错误，请重新输入");
			anykey_continue();
			return;
		}
		else
		{
			puts("请输入新密码");				//修改密码
			get_str(pw);
			strcpy(adm[0].passwd,pw);
			puts("修改成功");
			anykey_continue();
		}
}
void modify_teacher()						//修改教师密码
{
	char temp[20]={};
	char pw[20]={};
	puts("输入需要修改的教师姓名");
	scanf("%s",temp);
	for(int i=0;i<MAX;i++)					//寻找教师
	{
		if(strcmp(temp,tea[i].name)==0)
		{
			puts("请输入新密码");
			get_str(pw);
			strcpy(tea[i].passwd,pw);		//输入新密码
			puts("修改成功\n");
			anykey_continue();
			break;
		}
		if(i==(MAX-1))						//遍历完毕没有找到该教师
			{
				puts("没有此教师");
				anykey_continue();
			}
	}
}
void add_admin()							//添加教师
{
	char sex;
	char name[20];
	char id[30]={};
	for(int i=0;i<MAX;i++)					//寻找空位置
	{
		if(tea[i].sex=='\0')
		{
			puts("请输入教师姓名");
			get_str(name);
			printf("性别(m/w):");
			scanf("%c",&sex);
			if('w' == sex || 'm' == sex)	//判断输入性别的格式是否正确
			{
				sprintf(tea[i].name,"%s",name);
				tea[i].sex=sex;
			}
			else
			{
				printf("性别输入错误,请重新输入\n");
				anykey_continue();
				return;
			}
			for(;;)
			{
				printf("请输入教师工号");		//输入教师工号
				stdin->_IO_read_ptr = stdin->_IO_read_end;
				fgets(id,30,stdin);
				if(strlen(id)>21)			//格式有误
				{
					printf("输入格式有误\n");	
					memset(id, 0, sizeof id);
				}
				else						//格式正确
				{
					id[strlen(id)-1]='\0';
					strcpy(tea[i].id,id);
					puts("添加成功");
					anykey_continue();
					break;	
				}
			}

			return;
		}
	}
}
void del_admin()							//删除教师
{
	char temp[20]={};
	puts("需要删除的教师名字");
	get_str(temp);
	for(int i=0;i<MAX;i++)
	{
		if(strcmp(temp,tea[i].name)==0)		//寻找该教师并将exist置1
			{
				tea[i].exist=1;
				puts("删除成功");
				anykey_continue();
				return;
			}
	}
	printf("未找到");
}
void showin_admin()								//展示在职教师信息
{
	for(int i=0;i<MAX;i++)
	{
		if(tea[i].sex!=0)						//判断exist的值展示教师
		{
			if(tea[i].exist==0)
			printf("姓名：%s 性别：%s 工号：%s \n",tea[i].name,'w' == tea[i].sex?"女":"男",tea[i].id);
		}
	}
	anykey_continue();
}
void showout_admin()
{	
	for(int i=0;i<MAX;i++)
	{
		if(tea[i].exist==1 && tea[i].sex!=0)	//判断exist的值展示教师
		{
			printf("姓名：%s 性别：%s 工号：%s \n",tea[i].name,'w' == tea[i].sex?"女":"男",tea[i].id);
		}
	}
	anykey_continue();
}

void freeteacher()								//解锁教师
{
	char temp[20]={};
	puts("需要解锁的教师名字");
	get_str(temp);
	for(int i=0;i<MAX;i++)
	{
		if(strcmp(temp,tea[i].name)==0)			//通过姓名寻找教师并且将cnt归零
		{
			tea[i].cnt=0;
			puts("解锁成功");
			anykey_continue();
			return;
		}
	}
	puts("未找到");
	anykey_continue();
}
int login(void)								//登录
{
	
	char name[20]={};
	char pw[20]={};
	puts("请输入用户名");
	get_str(name);
	puts("请输入密码");
	get_str(pw);
	if(strcmp(adm[0].passwd,"0")==0)					//判断是否首次登陆 如果是修改密码
		{
			puts("首次登录请修改密码");
			get_str(pw);
			strcpy(adm[0].passwd,pw);
			puts("密码修改成功");
			anykey_continue();
			return 1;		
		}
	if(strcmp(name,adm[0].id)==0 && strcmp(pw,adm[0].passwd)==0)	//用户名和密码都对登陆成功
		{
			printf("登录成功\n");
			return 1;
		}
	else
		{
			puts("输入错误请重新输入");
			anykey_continue();
			return 0;
		}
		
}
void admin()			//主函数
{

	if(login())
	{
		for(;;)
		{
			system("clear");
			printf("欢迎使用校长系统\n");
			puts("1.重置密码");
			puts("2.重置教师密码");
			puts("3.添加教师");
			puts("4.删除教师");
			puts("5.显示在职教师");
			puts("6.显示离职教师");
			puts("7.解锁教师");
			puts("8.退出系统");
			switch(getch())
			{
				case '1':modify_admin();break;	
				case '2':modify_teacher();break;	
				case '3':add_admin();break;	
				case '4':del_admin();break;	
				case '5':showin_admin();break;	
				case '6':showout_admin();break;	
				case '7':freeteacher();break;
				case '8':return;	
			}
		}
	}
		else 
		return;
	
}
